#include "app_controller.h"
#include "ui_player.h"
#include <stdlib.h>
#include "player_controller.h"
#include "service_player.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
#include <fcntl.h>
#include <sys/wait.h>
//#include "../lvgl/lvgl.h"

#define MPLAYER_FIFO "/tmp/mplayer_fifo"



//初始化函数
void app_controller_init()
{

    //创建一个具名管道接收信号
    //不管存不存在我们不关心，只要有管道就可以，所以不关心它的错误信息
    system("mkfifo " MPLAYER_FIFO " > /dev/null 2>&1");

    // 注册 SIGCHLD 信号处理器
    // 这行代码告诉系统：当任何子进程结束时，请调用 sigchld_handler 函数。
    signal(SIGCHLD, sigchld_handler);


    // 初始化所有服务
    service_play_init();
    // service_favorites_init(); // 将来可以初始化收藏服务等


// 获取默认的显示器
lv_disp_t * disp = lv_disp_get_default();

// 【关键】将显示器的背景颜色设置为黑色 (或任何颜色，因为下一步会设为透明)
lv_disp_set_bg_color(disp, lv_color_black());

// 【最关键】将显示器的背景不透明度设置为完全透明
lv_disp_set_bg_opa(disp, LV_OPA_TRANSP);



    // 创建主 UI 界面程序入口
    ui_player_screen_create();

    // 启动时，让播放服务播放第一个视频
    service_play_init(); 
}


static void sigchld_handler(int sig) {
    //等待任何一个结束的子进程
    while (waitpid(-1, NULL, WNOHANG) > 0);
}


//响应函数
//按钮
void app_controller_btn_pause()
{
    player_pause();

}

//下一个视频(手势上滑)
void app_controller_swipe_up()
{
    service_play_next();

}

//上一个视频(手势下滑)
void app_controller_swipe_down()
{
    service_play_prev();
}

